Submission #1260488


Source Code Expand

#include <iostream>
#include <algorithm>
using namespace std;
int n, b[100009], dp[100009];
int solve(int l, int r) {
	if (l == r) return 0;
	int x = r - l, v1, v2;
	cout << "? " << l << ' ' << l + (1 << b[x]) << endl;
	cin >> v1;
	if (dp[x - (1 << b[x])] + 1 == dp[x]) return v1 + solve(l + (1 << b[x]), r);
	cout << "? " << r - (1 << b[x]) << ' ' << r << endl;
	cin >> v2;
	return v1 + v2 - solve(r - (1 << b[x]), l + (1 << b[x]));
}
int main() {
	cin >> n;
	for (int i = 1; i <= n; i++) {
		while (1 << b[i] <= i) b[i]++; b[i]--;
		dp[i] = min(dp[i - (1 << b[i])] + 1, dp[(2 << b[i]) - i] + 2);
	}
	int ret = solve(0, n);
	cout << "! " << ret << endl;
	return 0;
}

Submission Info

Submission Time
Task A - Array Sum
User square1001
Language C++14 (GCC 5.4.1)
Score 90
Code Size 690 Byte
Status AC
Exec Time 6 ms
Memory 1992 KB

Judge Result

Set Name All
Score / Max Score 90 / 100
Status
AC × 24
Set Name Test Cases
All 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt
Case Name Status Exec Time Memory
01-01.txt AC 3 ms 716 KB
01-02.txt AC 3 ms 720 KB
01-03.txt AC 3 ms 716 KB
01-04.txt AC 3 ms 720 KB
01-05.txt AC 4 ms 1484 KB
01-06.txt AC 5 ms 1480 KB
01-07.txt AC 5 ms 1484 KB
01-08.txt AC 4 ms 1488 KB
01-09.txt AC 4 ms 1484 KB
01-10.txt AC 5 ms 1608 KB
01-11.txt AC 5 ms 1604 KB
01-12.txt AC 5 ms 1860 KB
01-13.txt AC 5 ms 1736 KB
01-14.txt AC 5 ms 1992 KB
01-15.txt AC 5 ms 1864 KB
01-16.txt AC 6 ms 1992 KB
01-17.txt AC 6 ms 1988 KB
01-18.txt AC 5 ms 1988 KB
01-19.txt AC 4 ms 1100 KB
01-20.txt AC 4 ms 1356 KB
01-21.txt AC 5 ms 1864 KB
01-22.txt AC 5 ms 1352 KB
01-23.txt AC 5 ms 1480 KB
01-24.txt AC 5 ms 1864 KB