Submission #502361

#TimeUsernameProblemLanguageResultExecution timeMemory
502361vrohakXylophone (JOI18_xylophone)C++14
100 / 100
115 ms364 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], l1, l2, l3, stg1 = 0;	rj1[1]=0;
		int odg1 = query (1, 2), odg2, odg3;	l1=odg1;
		
  		odg2 = rj1[2] = odg1;
		
		int od1[n + 65], od2[n + 56], od3[n + 99];
		for (int i = 3; 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];		rj2[1]=0;
		int stg2 = 1;		int odg11 = l1;			int odg22 = l1;			int odg33;
  		rj2[2] = -odg22;
		
		for (int i = 3; i < n+1; i++){
			odg11 = odg22;		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;
}

Compilation message (stderr)

xylophone.cpp: In function 'void solve(int)':
xylophone.cpp:18:24: warning: unused variable 'l2' [-Wunused-variable]
   18 |   int rj1[n + 65], l1, l2, l3, stg1 = 0; rj1[1]=0;
      |                        ^~
xylophone.cpp:18:28: warning: unused variable 'l3' [-Wunused-variable]
   18 |   int rj1[n + 65], l1, l2, l3, stg1 = 0; rj1[1]=0;
      |                            ^~
xylophone.cpp:23:7: warning: variable 'od1' set but not used [-Wunused-but-set-variable]
   23 |   int od1[n + 65], od2[n + 56], od3[n + 99];
      |       ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...