void recurse(int num, string a, string b){
    if (!u) {
        return;
    }
    if (a == b && a != "") {
        //cout << a << endl;
        u=false;
        cout << order.size() << endl;
        for (int i = 0; i < order.size(); i++) {
            cout << order[i] << endl;
        }
        return;
    }
    if (num >= m) {
        return;
    }
    for (int i = 0; i < a1.size(); i++) {
        string p = a + a1[i];
        string q = b + b2[i];
        int least = min(p.length(), q.length());
        if (p.substr(0, least) == q.substr(0, least)) {
            order.push_back(i+1);
            recurse(num+1, p, q);
            order.pop_back();
        }
    }
}
int main(void)
{
    int num;
    cin >> num;
    
    for (int i = 0; i < num; i++) {
        int temp;
        cin >> temp;
        board.push_back(temp);
    }
    sort(board.begin(), board.end());
    cout << binary(0, (int) board.size()-1, 17);
}
void getCanonicalMatrix(vvd& a, vd& b, vd& c, const vc& sign, const vc& type)
{
    vvd a1;
    vd b1;
    vd c1 = c;

    for (size_t i = 0; i < type.size(); ++i)
    {
        if (type[i] == '<')
        {
            a1.push_back(a[i]);
            b1.push_back(b[i]);
        }
        if (type[i] == '>')
        {
            a1.push_back(a[i]);
            for (auto& j : a1.back())
            {
                j = -j;
            }
            b1.push_back(-b[i]);
        }
        if (type[i] == '=')
        {
            a1.push_back(a[i]);
            b1.push_back(b[i]); 
            a1.push_back(a[i]);
            for (auto& j : a1.back())
            {
                j = -j;
            }
            b1.push_back(-b[i]);
        }
    }

    for (int i = (int)sign.size() - 1; i >= 0; --i)
    {
        if (sign[i] == '0')
        {
            for (auto& v : a1)
            {
                v.insert(v.begin() + i + 1, -v[i]);
            }
            c1.insert(c1.begin() + i + 1, -c1[i]);
        }
    }

    a = a1;
    b = b1;
    c = c1;    
}
Exemple #4
0
int main ()
{
    srand (time (0));

    freopen (NAME".in", "r", stdin);
    freopen (NAME".out", "w", stdout);

    scanf ("%d", &n);

    primes.resize (n + 1, 1);
    primes [0] = primes [1] = 0;

    for (int i = 2; i * i <= n; i++)
        if (primes [i] && (i * 1ll * i <= n))
            for (int j = i * i; j <= n; j += i)
                primes [j] = 0;

    int ans = 0;
    int res = 2;

    for (int i = 1; i <= n; i++)
    {
        ans += primes [i];
        res = primes [i] ? i : res;
    }

    cout << ans << endl;
    cout << res << endl;

    return 0;
}
Exemple #5
0
//el vector a debe ser de una longitud potencia de 2
//mult = 1 FFt
//mult = -1 lo usa el inv_fft
//el vector a debe ser de una longitud potencia de 2
//mult = 1 FFt
//mult = -1 lo usa el inv_fft
vc fft(vc &a){

  int n = a.size();
  vc y(n);
  int lg = 0;

  while((1<<lg)<n) lg++;

  for(int i=0;i<n;i++){
    y[rev(i,lg)]=a[i];
  }

  for(int i = 1; i <= lg; i++){
    int m = 1<<i;
    for(int k=0;k<n;k+=m){
        for(int j=0;j<m/2;j++){
            double angle = (mult*j*2.0*M_PI)/m;
            comp w = comp(cos(angle),sin(angle));;
            comp t = w * y[k+j+m/2];
            comp u = y[k+j];
            y[k+j]=u+t;
            y[k+j+m/2]=u-t;
        }
    }
  }
  return y; 
}
void printResult(const linearProgramming::SlackForm& condition, const vc& sign, bool f = true)
{
    auto vars = condition.getResult();
    for (size_t i = 0, k = 0; i < sign.size(); ++i)
    {
        if (sign[i] == '+')
        {
            cout << vars[k++];
        }
        else
        {
            cout << vars[k] - vars[k + 1] << endl;
        }
        cout << "\t";
    }
    cout << endl;
	if (f)
	{
		cout << "MAX = " << condition.getV() << endl;
	}
	else
	{
		cout << "MAX = " << -condition.getV() << endl;
	}
}
Exemple #7
0
int main ()
{
    srand (time (0));

    freopen (NAME".in", "r", stdin);
    freopen (NAME".out", "w", stdout);

    scanf ("%d %d", &n, &m);
    g.resize (n + 1);
    used.resize (n + 1, 0);

    for (int i = 0; i < m; i++)
    {
        int x, y;
        scanf ("%d %d", &x, &y);
        g [x].pb (y);
        g [y].pb (x);
    }

    int ans = 0;

    for (int i = 1; i <= n; i++)
        if (!used [i])
        {
            ans++;
            dfs (i);
        }

    printf ("%d\n", ans);

    return 0;
}
int main(void)
{
    int num;
    cin >> num;
    board = vcc (num, vc (3, 0));
    for (int i = 0; i < num; i++) {
        int x, y, z;
        cin >> x >> y >> z;
        board[i][0] = x;
        board[i][1] = y;
        board[i][2] = z;
        sort(board[i].begin(), board[i].end(), wayToSort);
    }
    sort(board.begin(), board.end(), newComp);
    for (int i = 0; i < board.size(); i++) {
        list.push_back(board[i][0] * board[i][1] * board[i][2]);
    }
    /*for (int i = 0; i < board.size(); i++) {
        for (int j = 0; j < board[i].size(); j++) {
            cout << board[i][j] << " ";
        }cout << list[i] << endl;
    }*/
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        int x, y, z;
        cin >> x >> y >> z;
        vc foo = {x,y,z};
        sort(foo.begin(), foo.end(), wayToSort);
        int pro = process(foo);
        if (pro)cout << pro << endl;
        else cout << "Item does not fit." << endl;
    }
}
int main(void)
{
    int num;
    cin >> num;
    while (num--) {
        int s;
        cin >> s;
        for (int k = 0; k < s; k++) {
            int temp;
            cin >> temp;
            trains.push_back(temp);
            sorted.push_back(temp);
        }
        sort(sorted.begin(), sorted.end());
        int count = 0;
        while (sorted != trains) {
            for (int i = 0; i+1 < trains.size(); i++) {
                if (trains[i] > trains[i+1]) {
                    int t= trains[i+1];
                    trains[i+1] = trains[i];
                    trains[i] = t;
                    count++;
                }
            }
        }
        cout << "Optimal train swapping takes "<< count << " swap(s)." <<endl;
        trains.clear();
        sorted.clear();
    }
    
}
int main(void)
{
    int cows, stalls;
    cin >> cows >> stalls;
    vector<bool> grid (stalls+1, false);
    umb.push_back(0);
    for (int i = 0; i < cows; i++) {
        int temp;
        cin >> temp;
        list.push_back(temp);
    }
    sort(list.begin(), list.end());
    for (int i = 0; i < stalls; i++) {
        int temp;
        cin >> temp;
        umb.push_back(temp);
    }
}
int main(void)
{
    int num;
    cin >> num;
    for (int i = 0; i < num; i++) {
        int temp;
        cin >> temp;
        if (temp == 0) {
            list.pop_back();
        }
        else list.push_back(temp);
    }
    int sum = 0;
    for (int i = 0; i < list.size(); i++) {
        sum += list[i];
    }
    cout << sum;
}
int main(void)
{
    int test;
    cin >> test;
    while (test--) {
        int num;
        cin >> num;
        for (int i = 0; i < num; i++) {
            int temp;
            cin >> temp;
            mount.push_back(temp);
        }
        lake.push_back(0);
        cout << check() << endl;
        lake.clear();
        mount.clear();
        branch.clear();
    }
}
int main(void)
{
    int num;
    cin >> num;
    
    for (int i = 0; i < num; i++) {
        int temp;
        cin >> temp;
        list.push_back(temp);
    }
    cout << "enter: ";
    int x, y;
    cin >> x >> y;
    tree = vector<int> (4*list.size(), 0);
    build(1,0,list[list.size()-1]);
    for (int i = 0; i < tree.size(); i++) {
        cout << tree[i] << endl;
    }
}
bool check(vc ckset){
    int qw = 0;
    for (int i = 0; i < ckset.size()-1; i++) {
        if (ckset[i]%12 == 0 || ckset[i] == 12) {
            qw++;
        }
    }
    if (qw == 9) {
        return true;
    }
    return false;
}
int main(void)
{
    freopen("censor.in", "r", stdin);
    freopen("censor.out", "w", stdout);
    cin >> str >> sub;
    
    for (int i = 0; i < str.length(); i++) {
        if (str[i] == sub[0]) {
            list.push_back(i);
        }
    }
    
    while (1) {
        bool p = false;
    for (int i = 0; list[i] + sub.length() <= str.length() && i < list.size(); i++) {
            if (str.substr(list[i], sub.length()) == sub){
                p = true;
                str.erase(list[i], sub.length());
                i--;
            }
    }
        if (!p) {
            break;
        }
    }
    /*for (int i = 0; i + sub.length() <= str.length(); i++) {
        if (str[i] == sub[0]) {
            if (str.substr(i, sub.length()) == sub){
                str.erase(i, sub.length());
                if (list.size() > 0) {
                    i = -list.top() -1;
                    list.pop();
                    continue;
                }
            }
            else list.push(-i);
        }
    }*/
    cout << str;
}
int main(void)
{
    input;
    int num;
    cin >> num;
    

    for (int i = 0; i < num; i++) {
        int temp;
        cin >> temp;
        list.push_back(temp);
    }
}
int main(void)
{
    int num;
    cin >> num;
    
    for (int i = 0; i < num; i++) {
        int temp;
        cin >> temp;
        board.push_back(temp);
    }
    sort(board.end(), board.begin());
    
    while (1) {
        int cur = board[0]+1;
        for (int i = 0; i < board.size(); i++) {
            if(board[i] < cur){
                cur = board[i];
                board[i] = -5;
            }
            else if (<#condition#>)
        }
    }
}
void best(int index, string a, string b, vc s, vector<bool> limits){
    cout << "index: " << index << " a: " << a << " b: " << b<< " ";
    for (int w = 0; w < s.size(); w++) {
        cout << s[w];
    }
    cout << endl;
    if (s.size() < lim) {
    if (a == b) {
        cout << "*************************************" <<endl;
        bool p = true;
        for (int j = 0; j < num; j++) {
            if (limits[j] == false) {
                p = false;
                break;
            }
        }
        if (p == true) {
            cout << s.size() << endl;
            for (int q = 0; q < s.size(); q++) {
                cout << s[q] << endl;
            }
            return;
        }
       
    }
    int jkl = 0;
    for (int i = 0; i < min(a.length(), b.length()); i++) {
        if (a[i] != b[i]) {
            jkl++;
        }
    }
    if (jkl == 0) {
    for (int i = 0; i < num; i++) {
        if (b == "abaaaaaa") {
            cout << "yyyyyyyyyyyyyy" <<endl;
        }
        //cout << i <<endl;
        s.push_back(i);
        limits[i]= true;
        a+=str[0][i];
        b+=str[1][i];
        if (a == "abaaaaaab" || b == "abaaaaaab")
            cout << "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%";
        best(i, a, b, s, limits);
        limits[i] = false;
        s.pop_back();
    }
    }}
        
}
Exemple #19
0
int main ()
{
    srand (time (0));

    freopen ("input.txt", "r", stdin);
    freopen ("output.txt", "w", stdout);

    scanf ("%d %d", &n, &m);
    g.resize (n + 1);
    used.resize (n + 1, 0);

    for (int i = 0; i < m; i++)
    {
        int x, y;
        scanf ("%d %d", &x, &y);
        g [x].pb (y);
        num [x][y] = i + 1;
    }

    int st;
    scanf ("%d", &st);
    vi ans;
    found = 0;
    dfs (st, ans);

    if ((int) ans.size () == 0)
    {
        puts ("-1");
        return 0;
    }

    reverse (ans.begin (), ans.end ());
    ans.pop_back ();
    printf ("%d\n", (int) ans.size ());

    for (int i = 0; i < (int) ans.size (); i++)
        printf ("%d%c", ans [i], " \n" [i == (int) ans.size () - 1]);

    return 0;
}
int main(void)
{
    list.push_back(4);
    list.push_back(2);
    list.push_back(9);
    list.push_back(1);
    list.push_back(3);
    list.push_back(4);
    list.push_back(7);
    
    sort(list.begin(), list.end(), myfunc);
    for(int i = 0; i <list.size(); i++){
        cout << list[i] << endl;
    }
    
    int r, c;
    cin >> r >> c;
    
    for (int i = 0; i < num; i++) {
        int temp;
        cin >> temp;
        list.push_back(temp);
    }
}
vc transform(int code, vc vec){
	int size = vec.size();
	vc initial  = vec;
	switch(code){
		case 1:
			for (int i=0; i<size; ++i){
				for (int j=0; j<size; ++j){
					vec[j][size-i-1] = initial[i][j];
				}
			}
			return vec;
			break;
		case 4:
			for (int i=0; i<size; ++i){
				for (int j=0; j<size; ++j){
					vec[i][size-j-1] = initial[i][j];
				}
			}
			return vec;
			break;
		case 3:
			for (int i=0; i<size; ++i){
				for (int j=0; j<size; ++j){
					vec[size-j-1][i] = initial[i][j];
				}
			}
			return vec;
			break;
		case 2:
			for (int i=0; i<size; ++i){
				for (int j=0; j<size; ++j){
					vec[size-i-1][size-j-1] = initial[i][j];
				}
			}
			return vec;
			break;
	}
}
int main(void)
{
    list.push_back(2);
    list.push_back(3);
    list.push_back(5);
    list.push_back(7);
    list.push_back(11);
    list.push_back(13);
    list.push_back(17);
    list.push_back(19);
    list.push_back(23);
    list.push_back(29);
    list.push_back(31);
    list.push_back(37);
    list.push_back(41);
    list.push_back(43);
    list.push_back(47);
    list.push_back(53);
    list.push_back(59);
    list.push_back(61);
    list.push_back(67);
    list.push_back(71);
    list.push_back(73);
    list.push_back(79);
    list.push_back(83);
    list.push_back(89);
    list.push_back(97);
    list.push_back(101);
    list.push_back(103);
    list.push_back(107);
    list.push_back(109);
    list.push_back(113);
    list.push_back(127);
    list.push_back(131);
    list.push_back(137);
    list.push_back(139);
    list.push_back(149);
    list.push_back(151);
    list.push_back(157);
    list.push_back(163);
    list.push_back(167);
    list.push_back(173);
    list.push_back(179);
    list.push_back(181);
    list.push_back(191);
    list.push_back(193);
    list.push_back(197);
    list.push_back(199);
    list.push_back(211);
    list.push_back(223);
    list.push_back(227);
    list.push_back(229);
    list.push_back(233);
    list.push_back(239);
    list.push_back(241);
    list.push_back(251);
    list.push_back(257);
    list.push_back(263);
    list.push_back(269);
    list.push_back(271);
    list.push_back(277);
    list.push_back(281);
    list.push_back(283);
    list.push_back(293);
    list.push_back(307);
    list.push_back(311);
    list.push_back(313);
    list.push_back(317);
    list.push_back(331);
    list.push_back(337);
    list.push_back(347);
    list.push_back(349);
    list.push_back(353);
    list.push_back(359);
    list.push_back(367);
    list.push_back(373);
    list.push_back(379);
    list.push_back(383);
    list.push_back(389);
    list.push_back(397);
    list.push_back(401);
    list.push_back(409);
    list.push_back(419);
    list.push_back(421);
    list.push_back(431);
    list.push_back(433);
    list.push_back(439);
    list.push_back(443);
    list.push_back(449);
    list.push_back(457);
    list.push_back(461);
    list.push_back(463);
    list.push_back(467);
    list.push_back(479);
    list.push_back(487);
    list.push_back(491);
    list.push_back(499);
    list.push_back(503);
    list.push_back(509);
    list.push_back(521);
    list.push_back(523);
    list.push_back(541);
    list.push_back(547);
    list.push_back(557);
    list.push_back(563);
    list.push_back(569);
    list.push_back(571);
    list.push_back(577);
    list.push_back(587);
    list.push_back(593);
    list.push_back(599);
    list.push_back(601);
    list.push_back(607);
    list.push_back(613);
    list.push_back(617);
    list.push_back(619);
    list.push_back(631);
    list.push_back(641);
    list.push_back(643);
    list.push_back(647);
    list.push_back(653);
    list.push_back(659);
    list.push_back(661);
    list.push_back(673);
    list.push_back(677);
    list.push_back(683);
    list.push_back(691);
    list.push_back(701);
    list.push_back(709);
    list.push_back(719);
    list.push_back(727);
    list.push_back(733);
    list.push_back(739);
    list.push_back(743);
    list.push_back(751);
    list.push_back(757);
    list.push_back(761);
    list.push_back(769);
    list.push_back(773);
    list.push_back(787);
    list.push_back(797);
    list.push_back(809);
    list.push_back(811);
    list.push_back(821);
    list.push_back(823);
    list.push_back(827);
    list.push_back(829);
    list.push_back(839);
    list.push_back(853);
    list.push_back(857);
    list.push_back(859);
    list.push_back(863);
    list.push_back(877);
    list.push_back(881);
    list.push_back(883);
    list.push_back(887);
    list.push_back(907);
    list.push_back(911);
    list.push_back(919);
    list.push_back(929);
    list.push_back(937);
    list.push_back(941);
    list.push_back(947);
    list.push_back(953);
    list.push_back(967);
    list.push_back(971);
    list.push_back(977);
    list.push_back(983);
    list.push_back(991);
    list.push_back(997);
    int n;
    cin >> n;
    if (n <= 1) {
        cout << "not";
        return 0;
    }
    vector<int>::iterator it;
    it = find(list.begin(), list.end(), n);
    if (it != list.end())
        cout << "prime";
    else
        cout << "not";
    
    return 0;
}
int main(void)
{
    moves[1] = "ABDE";
    moves[2] = "ABC";
    moves[3] = "BCEF";
    moves[4] = "ADG";
    moves[5] = "BDEFH";
    moves[6] = "CFI";
    moves[7] = "DEGH";
    moves[8] = "GHI";
    moves[9] = "EFHI";
    
    clocks['A'] = 0;
    clocks['B'] = 1;
    clocks['C'] = 2;
    clocks['D'] = 3;
    clocks['E'] = 4;
    clocks['F'] = 5;
    clocks['G'] = 6;
    clocks['H'] = 7;
    clocks['I'] = 8;
    
    for (int i = 1; i <= 9; i++) {
        int temp;
        cin >> temp;
        //val[i] = temp;
        list.push_back(temp);
    //6,9,3,3,3,9,12,12,12, 12, 12, 12
    //9,3,9,9,9,9,9,9,9,9,9,9
    }
    //cout << list[list.size()-3] << ',' << list[list.size()-2] << ','<< list[list.size()-1] << endl;
    //return 0;
    //cout << endl;
    for (int i = 1; i <= 9; i++) {
        if (u) {
            break;
        }
        list.push_back(i);
        addvals(list, "");
        list.pop_back();
    }
    for (int i = 0; i < bfs.size(); i++) {
        if (u) {
            break;
        }
        //if (i < 10000) {
            for (int k = 0; k < bfs[i].size(); k++) {
                cout << bfs[i][k] << ",";
            }
            cout << endl;
        //}
        if(bfs[i].size())bfs[i].pop_back();
        for (int j = 1; j <= 9 ; j++) {
            if (u) {
                break;
            }
            bfs[i].push_back(j);
            addvals(bfs[i], ord[i]);
            bfs[i].pop_back();
        }
    }
 
}
Exemple #24
0
//se encarga de evaluar un polinomio v en el valor val
//los coeficientes deben estar ordenados en orden creciente
// de la potencia de X
comp eval(vc v, comp val){
    comp s;
    for(int i=0;i<v.size();i++) 
        s+=pow(val,i)*v[i];
    return s;
}
char check(void){
    while (mount.size()) {
        if (mount[mount.size()-1] == lake[lake.size()-1]+1) {
            lake.push_back(mount[mount.size()-1]);
            mount.pop_back();
        }
        else if (branch.size()){
            if (branch[branch.size()-1] == lake[lake.size()-1]+1) {
                lake.push_back(branch[branch.size()-1]);
                branch.pop_back();
            }
            else if (branch[branch.size()-1] < mount[mount.size()-1]){
                return 'N';
            }
            else if (branch[branch.size()-1] > mount[mount.size()-1]){
                branch.push_back(mount[mount.size()-1]);
                mount.pop_back();
            }
        }
        else {
            branch.push_back(mount[mount.size()-1]);
            mount.pop_back();
        }
    }
    return 'Y';
}