Submission #502378

#TimeUsernameProblemLanguageResultExecution timeMemory
502378vrohakXylophone (JOI18_xylophone)C++14
0 / 100
0 ms200 KiB
#include <bits/stdc++.h> #include "xylophone.h" using namespace std; /*int query (int a,int b){ cout<<a<<" "<<b<<endl; int pes; cin>>pes; return pes; }*/ void solve (int n){ //ako je x pozitivan //ako je x pozitivan //ako je x pozitivan //ako je x pozitivan //ako je x pozitivan //ako je x pozitivan //ako je x pozitivan //ako je x pozitivan int rj1[n + 65], zzl1, zzl2, zzl3, stg1; int od1[n + 65], od2[n + 56], od3[n + 99], odg1, odg2, odg3; rj1[1]=0; stg1=0; od1[3]=odg1 = query(1, 2); zzl1=odg1; od2[3]=odg2 = query(2, 3); zzl2=odg2; od3[3]=odg3 = query(1, 3); zzl3=odg3; rj1[2] = odg1; if (odg3 == odg2 + odg1){ rj1[3] = odg1 + odg2; } else { stg1 = 1; rj1[3] = odg1 - odg2; } for (int i = 4; i < n + 1; i++){ odg1 = odg2; odg2 = query(i-1, i); odg3 = query(i-2, i); od1[i]=odg1; od2[i]=odg2; od3[i]=odg3; if (stg1 == 0){ if (odg3 == odg2 + odg1){ rj1[i] = rj1[i - 1] + odg2; } else { stg1 = 1; rj1[i] = rj1[i - 1] - odg2; } } else { if (odg3 == odg2 + odg1){ rj1[i] = rj1[i - 1] - odg2; } else { stg1 = 0; rj1[i] = rj1[i - 1] + odg2; } } } int pt1 = query (1, n), mini1 = 0x3f3f3f3f; for (int i = 1; i < n + 1; i++){ mini1 = min(mini1 , rj1[i]); } mini1 = mini1*(-1) + 1; for (int i = 1; i < n + 1; i++){ rj1[i] = rj1[i] + mini1; } //ako je x negativan //ako je x negativan //ako je x negativan //ako je x negativan //ako je x negativan //ako je x negativan //ako je x negativan //ako je x negativan //ako je x negativan int rj2[n+65], stg2, odg11, odg22,odg33; rj2[1]=0; stg2 = 1; odg11 = zzl1; odg22 = zzl2; odg33 = zzl3; rj2[2] = -odg11; for (int i = 3; i < n+1; i++){ odg11 = od1[i]; odg22 = od2[i]; odg33 = od3[i]; if (stg2 == 0){ if (odg33 == odg22 + odg11){ rj2[i] = rj2[i - 1] + odg22; } else { stg2 = 1; rj2[i] = rj2[i - 1] - odg22; } } else { if (odg33 == odg22 + odg11){ rj2[i] = rj2[i - 1] - odg22; } else { stg2 = 0; rj2[i] = rj2[i - 1] + odg22; } } } int mini2 = 0x3f3f3f3f; for (int i = 1; i < n + 1; i++){ mini2 = min(mini2, rj2[i]); } mini2 = mini2*(-1) + 1; for (int i = 1; i < n + 1; i++){ rj2[i] = rj2[i] + mini2; } // < ispis > < ispis > < ispis > < ispis > < ispis > < ispis > < ispis > < ispis > < ispis > < ispis > < ispis > < ispis > < ispis > < ispis > < ispis > < ispis > < ispis > int mp1 = 0, mp2 = 0, pro = 0, niz[n + 55]; memset(niz, 0, sizeof niz); for (int i = 1; i < n + 1; i++){ if (rj1[i] == 1){ pro++; } if (rj1[i] == n and pro == 0){ mp1++; break; } } for (int i = 1; i < n + 1; i++){ niz[rj1[i]]++; } for (int i = 1; i < n + 1; i++){ if (niz[i] == 0){ mp2 = 1; } } if (pt1 == n - 1 and mp1 == 0 and mp2 == 0){ for (int i = 1; i < n + 1; i++){ answer(i,rj1[i]); } } else { for (int i = 1; i < n + 1; i++){ answer(i,rj2[i]); } } return; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...