結果

問題 No.471 直列回転機
ユーザー koyumeishikoyumeishi
提出日時 2015-07-31 00:43:28
言語 C++11
(gcc 11.4.0)
結果
AC  
実行時間 464 ms / 3,141 ms
コード長 2,325 bytes
コンパイル時間 1,134 ms
コンパイル使用メモリ 105,960 KB
実行使用メモリ 25,336 KB
平均クエリ数 19588.39
最終ジャッジ日時 2024-06-11 10:12:23
合計ジャッジ時間 16,680 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 21 ms
24,836 KB
testcase_01 AC 19 ms
25,196 KB
testcase_02 AC 18 ms
25,196 KB
testcase_03 AC 21 ms
25,196 KB
testcase_04 AC 19 ms
25,196 KB
testcase_05 AC 21 ms
24,940 KB
testcase_06 AC 21 ms
25,324 KB
testcase_07 AC 21 ms
24,812 KB
testcase_08 AC 57 ms
24,940 KB
testcase_09 AC 64 ms
24,820 KB
testcase_10 AC 38 ms
24,812 KB
testcase_11 AC 181 ms
25,196 KB
testcase_12 AC 371 ms
24,836 KB
testcase_13 AC 385 ms
24,836 KB
testcase_14 AC 423 ms
24,580 KB
testcase_15 AC 370 ms
24,964 KB
testcase_16 AC 21 ms
25,208 KB
testcase_17 AC 19 ms
25,184 KB
testcase_18 AC 19 ms
25,196 KB
testcase_19 AC 20 ms
24,416 KB
testcase_20 AC 464 ms
25,208 KB
testcase_21 AC 97 ms
24,824 KB
testcase_22 AC 399 ms
25,208 KB
testcase_23 AC 370 ms
24,952 KB
testcase_24 AC 223 ms
24,568 KB
testcase_25 AC 74 ms
25,208 KB
testcase_26 AC 441 ms
24,824 KB
testcase_27 AC 215 ms
25,208 KB
testcase_28 AC 252 ms
24,952 KB
testcase_29 AC 282 ms
24,568 KB
testcase_30 AC 108 ms
25,208 KB
testcase_31 AC 447 ms
25,208 KB
testcase_32 AC 358 ms
24,568 KB
testcase_33 AC 273 ms
24,952 KB
testcase_34 AC 420 ms
25,208 KB
testcase_35 AC 90 ms
24,568 KB
testcase_36 AC 177 ms
25,208 KB
testcase_37 AC 53 ms
24,824 KB
testcase_38 AC 83 ms
25,196 KB
testcase_39 AC 148 ms
24,568 KB
testcase_40 AC 305 ms
24,952 KB
testcase_41 AC 427 ms
24,952 KB
testcase_42 AC 284 ms
24,952 KB
testcase_43 AC 401 ms
25,208 KB
testcase_44 AC 52 ms
25,052 KB
testcase_45 AC 274 ms
24,824 KB
testcase_46 AC 303 ms
25,336 KB
testcase_47 AC 419 ms
24,568 KB
testcase_48 AC 347 ms
25,196 KB
testcase_49 AC 337 ms
24,952 KB
testcase_50 AC 381 ms
24,824 KB
testcase_51 AC 163 ms
24,824 KB
testcase_52 AC 22 ms
25,196 KB
testcase_53 AC 26 ms
25,196 KB
testcase_54 AC 22 ms
25,196 KB
testcase_55 AC 103 ms
24,812 KB
testcase_56 AC 87 ms
24,812 KB
testcase_57 AC 64 ms
25,196 KB
testcase_58 AC 37 ms
24,556 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In member function ‘val val::operator=(const val&)’:
main.cpp:56:9: warning: no return statement in function returning non-void [-Wreturn-type]
   56 |         }
      |         ^

ソースコード

diff #

#include <complex>
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <string>
#include <queue>
#include <map>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <functional>
#include <random>
#include <ctime>
#include "assert.h"

using namespace std;

pair<long long,long long> operator * (const int& r, const pair<long long,long long>& p){
	pair<long long, long long> ret = (r&1)?pair<long long,long long>{-p.second, p.first}:p;
	if(r&2) ret = {-ret.first, -ret.second};
	return ret;
}

pair<long long, long long> operator + (const pair<long long, long long>& y, const pair<long long, long long>& x){
	pair<long long, long long> ret = y;
	ret.first += x.first;
	ret.second += x.second;
	return ret;
}

pair<long long, long long> operator - (const pair<long long, long long>& y, const pair<long long, long long>& x){
	pair<long long, long long> ret = y;
	ret.first -= x.first;
	ret.second -= x.second;
	return ret;
}

struct val{
	int rot;
	pair<long long, long long> con;

	val() : rot(0), con({0,0}){
	}

	val(const int r_, const pair<long long, long long>& o ) : rot(r_){
		con = o - rot * o;
	}

	val(const val& x) : rot(x.rot), con(x.con){
	}

	val operator = (const val& x){
		rot = x.rot;
		con = x.con;
	}

	val operator * (const val& x){
		val ret;
		ret.rot = (rot + x.rot) & 0b11;
		ret.con = x.rot * con + x.con;
		return ret;
	}

	pair<long long, long long> operator () (const pair<long long, long long>& v){
		pair<long long, long long> ret = rot * v + con;
		return ret;
	}

};

ostream& operator << (ostream& os, const pair<long long,long long>& x){
	os << x.first << " " << x.second;
	return os;
}

int main(int argc, char* argv[]){
	int m;
	cin >> m;
	vector<pair<long long, long long>> p(m);
	for(int i=0; i<m; i++){
		cin >> p[i].first >> p[i].second;
	}

	pair<long long, long long> a,b;
	a = {0,0};
	b = {1,0};

	pair<long long, long long> a_,b_;
	cout << "? " << a << endl;
	cin >> a_.first >> a_.second;
	
	cout << "? " << b << endl;
	cin >> b_.first >> b_.second;

	val f;
	pair<long long, long long> v = b_ - a_;
	
	map<pair<long long, long long>, int> r;
	r[{ 1, 0}] = 0;
	r[{ 0, 1}] = 1;
	r[{-1, 0}] = 2;
	r[{ 0,-1}] = 3;
	f.rot = r[v];
	f.con = a_ - f(a);
	cout << "!" << endl;
	for(int i=0; i<m; i++){
		cout << f(p[i]) << endl;
	}

	return 0;
}
0